Test 1: Login into Sportys as a Paid User and go to Pilot Training - Airplane Transport Pilot (ATP) @pilot_training @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).waitFor
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).click
- locator.getByTitle('Airline Transport Pilot (ATP)').waitFor
- locator.getByTitle('Airline Transport Pilot (ATP)').click
- page.waitForTimeout
- page.screenshot
- attach "course-screenshot"
- locator.getByLabel('Close').waitFor
- locator.getByLabel('Close').click
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/ATP/licenses)
- apiResponse.json
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('button', { name: 'Quit' }).waitFor
- locator.getByRole('button', { name: 'Quit' }).click
- locator.getByText('Are you sure you want to leave the session?').waitFor
- locator.getByText('Are you sure you want to leave the session?').click
- locator.getByRole('button', { name: 'Yes' }).waitFor
- locator.getByRole('button', { name: 'Yes' }).click
- locator.waitFor(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.click(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('button', { name: 'Quit' }).waitFor
- locator.getByRole('button', { name: 'Quit' }).click
- locator.getByText('Are you sure you want to leave the session?').waitFor
- locator.getByText('Are you sure you want to leave the session?').click
- locator.getByRole('button', { name: 'Yes' }).waitFor
- locator.getByRole('button', { name: 'Yes' }).click
- locator.getByRole('link', { name: 'Request Certificate' }).waitFor
- locator.getByRole('link', { name: 'Request Certificate' }).click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418478?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
| Status |
Time Taken |
| Passed |
42.80s |
Test 2: Login into Sportys as a Paid User and go to Pilot Training - Certified Flight Instructor (CFI) - Airplane course @pilot_training @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).waitFor
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).click
- locator.waitFor(app-course-group-card >> internal:has-text="Launch Course"i >> #LTF)
- locator.click(app-course-group-card >> internal:has-text="Launch Course"i >> #LTF)
- locator.waitFor(div >> internal:has-text=/^Instrument Flight Instructor \(CFII\)$/ >> nth=0)
- locator.click(div >> internal:has-text=/^Instrument Flight Instructor \(CFII\)$/ >> nth=0)
- page.pause
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/CFI_FOI/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/CFI_AI/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/CFI_I/licenses)
- apiResponse.json
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.waitFor(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.click(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('link', { name: 'Request Certificate' }).waitFor
- locator.getByRole('link', { name: 'Request Certificate' }).click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418495?deleteProgress=true)
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418494?deleteProgress=true)
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418496?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
| Status |
Time Taken |
| Passed |
60.21s |
Test 3: Login into Sportys as a Paid User and go to Pilot Training - Instrument Flight Instructor (CFII) - Airplane course @pilot_training @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).waitFor
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).click
- locator.waitFor(app-course-group-card >> internal:has-text="Launch Course"i >> #LTF)
- locator.click(app-course-group-card >> internal:has-text="Launch Course"i >> #LTF)
- locator.waitFor(div >> internal:has-text=/^Instrument Flight Instructor \(CFII\)$/ >> nth=0)
- locator.click(div >> internal:has-text=/^Instrument Flight Instructor \(CFII\)$/ >> nth=0)
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/CFI_FOI/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/CFI_AI/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/CFI_I/licenses)
- apiResponse.json
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.waitFor(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.click(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.waitFor(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.click(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.getByRole('link', { name: 'Request Certificate' }).waitFor
- locator.getByRole('link', { name: 'Request Certificate' }).click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418519?deleteProgress=true)
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418518?deleteProgress=true)
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418520?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
| Status |
Time Taken |
| Passed |
59.71s |
Test 4: Login into Sportys as a Paid User and go to Pilot Training - Commercial Pilot @pilot_training @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).waitFor
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).click
- locator.getByTitle('Commercial Pilot').waitFor
- locator.getByTitle('Commercial Pilot').click
- page.waitForTimeout
- page.screenshot
- attach "course-screenshot"
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/COMMERCIAL/licenses)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418542/videosViewed/all)
- page.reload
- locator.getByText('Video Progress: 100%').textContent
- page.waitForTimeout
- page.screenshot
- attach "course-progress-screenshot"
- locator.waitFor(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.click(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByLabel('Close').click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('button', { name: 'Quit' }).waitFor
- locator.getByRole('button', { name: 'Quit' }).click
- locator.getByText('Are you sure you want to leave the session?').waitFor
- locator.getByText('Are you sure you want to leave the session?').click
- locator.getByRole('button', { name: 'Yes' }).waitFor
- locator.getByRole('button', { name: 'Yes' }).click
- page.waitForTimeout
- page.reload
- locator.waitFor(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.click(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByLabel('Close').click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('button', { name: 'Quit' }).waitFor
- locator.getByRole('button', { name: 'Quit' }).click
- locator.getByText('Are you sure you want to leave the session?').waitFor
- locator.getByText('Are you sure you want to leave the session?').click
- locator.getByRole('button', { name: 'Yes' }).waitFor
- locator.getByRole('button', { name: 'Yes' }).click
- locator.getByText('Request Endorsement').waitFor
- locator.getByText('Request Endorsement').click
- locator.getByRole('button', { name: 'Continue with the endorsement' }).waitFor
- locator.getByRole('button', { name: 'Continue with the endorsement' }).click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418542?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6
| Status |
Time Taken |
| Passed |
61.38s |
Test 5: Login into Sportys as a Paid User and go to Pilot Training - Fundamentals of Instructing (FOI) course @pilot_training @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).waitFor
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).click
- locator.waitFor(app-course-group-card >> internal:has-text="Launch Course"i >> #LTF)
- locator.click(app-course-group-card >> internal:has-text="Launch Course"i >> #LTF)
- locator.waitFor(div >> internal:has-text=/^Fundamentals of Instructing \(FOI\)$/ >> nth=0)
- locator.click(div >> internal:has-text=/^Fundamentals of Instructing \(FOI\)$/ >> nth=0)
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/CFI_FOI/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/CFI_AI/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/CFI_I/licenses)
- apiResponse.json
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.waitFor(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.click(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByText('Request Endorsement').waitFor
- locator.getByText('Request Endorsement').click
- locator.getByRole('button', { name: 'Continue with the endorsement' }).waitFor
- locator.getByRole('button', { name: 'Continue with the endorsement' }).click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418679?deleteProgress=true)
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418678?deleteProgress=true)
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418680?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
| Status |
Time Taken |
| Passed |
52.02s |
Test 6: Login into Sportys as a Paid User and go to Pilot Training - Instrument Rating @pilot_training @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).waitFor
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).click
- locator.getByTitle('Instrument Rating').waitFor
- locator.getByTitle('Instrument Rating').click
- page.waitForTimeout
- page.screenshot
- attach "course-screenshot"
- locator.getByLabel('Close').waitFor
- locator.getByLabel('Close').click
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/INSTRUMENT/licenses)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418702/videosViewed/all)
- page.reload
- locator.getByText('Video Progress: 100%').textContent
- page.waitForTimeout
- page.screenshot
- attach "course-progress-screenshot"
- locator.waitFor(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.click(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByLabel('Close').click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('button', { name: 'Quit' }).waitFor
- locator.getByRole('button', { name: 'Quit' }).click
- locator.getByText('Are you sure you want to leave the session?').waitFor
- locator.getByText('Are you sure you want to leave the session?').click
- locator.getByRole('button', { name: 'Yes' }).waitFor
- locator.getByRole('button', { name: 'Yes' }).click
- page.waitForTimeout
- page.reload
- locator.waitFor(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.click(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByLabel('Close').click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('button', { name: 'Quit' }).waitFor
- locator.getByRole('button', { name: 'Quit' }).click
- locator.getByText('Are you sure you want to leave the session?').waitFor
- locator.getByText('Are you sure you want to leave the session?').click
- locator.getByRole('button', { name: 'Yes' }).waitFor
- locator.getByRole('button', { name: 'Yes' }).click
- locator.getByText('Request Endorsement').waitFor
- locator.getByText('Request Endorsement').click
- locator.getByRole('button', { name: 'Continue with the endorsement' }).waitFor
- locator.getByRole('button', { name: 'Continue with the endorsement' }).click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418702?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6
| Status |
Time Taken |
| Passed |
56.62s |
Test 7: Login into Sportys as a Paid User and go to Pilot Training - Private Pilot @pilot_training @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).waitFor
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).click
- locator.waitFor(app-course-group-card >> internal:has-text="Launch Course"i >> #LTF)
- locator.click(app-course-group-card >> internal:has-text="Launch Course"i >> #LTF)
- locator.waitFor(div >> internal:has-text=/^Private Pilot Course$/ >> nth=0)
- locator.click(div >> internal:has-text=/^Private Pilot Course$/ >> nth=0)
- locator.waitFor(.close >> nth=0)
- locator.click(.close >> nth=0)
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/PRIVATE/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/SPORT/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/RECREATION/licenses)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418816/videosViewed/all)
- page.reload
- locator.getByText('Video Progress: 100%').textContent
- locator.waitFor(app-accordion-menu div >> internal:has-text="Test Prep"i >> nth=1)
- locator.click(app-accordion-menu div >> internal:has-text="Test Prep"i >> nth=1)
- page.waitForTimeout
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByRole('button', { name: 'Begin Test' }).waitFor
- locator.getByRole('button', { name: 'Begin Test' }).click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- page.screenshot
- attach "faa-practice-test-completed"
- page.waitForTimeout
- page.reload
- locator.waitFor(app-accordion-menu div >> internal:has-text="Test Prep"i >> nth=1)
- locator.click(app-accordion-menu div >> internal:has-text="Test Prep"i >> nth=1)
- page.waitForTimeout
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByRole('button', { name: 'Begin Test' }).waitFor
- locator.getByRole('button', { name: 'Begin Test' }).click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- page.screenshot
- attach "faa-practice-test-completed"
- locator.getByText('Request Endorsement').waitFor
- locator.getByText('Request Endorsement').click
- locator.getByRole('button', { name: 'Continue with the endorsement' }).waitFor
- locator.getByRole('button', { name: 'Continue with the endorsement' }).click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418816?deleteProgress=true)
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418817?deleteProgress=true)
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43417886?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
Screenshot 6
| Status |
Time Taken |
| Passed |
65.70s |
Test 8: Login into Sportys as a Paid User and go to Pilot Training - Sport Pilot @pilot_training @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/license)
- page.reload
- locator.getByRole('button', { name: 'Filter' }).waitFor
- locator.getByRole('button', { name: 'Filter' }).click
- page.waitForTimeout
- page.screenshot
- attach "filter-course-screenshot"
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).waitFor
- locator.getByRole('link', { name: 'Pilot Training', exact: true }).click
- locator.waitFor(app-course-group-card >> internal:has-text="Launch Course"i >> #LTF)
- locator.click(app-course-group-card >> internal:has-text="Launch Course"i >> #LTF)
- locator.waitFor(div >> internal:has-text=/^Sport Pilot Course$/ >> nth=0)
- locator.click(div >> internal:has-text=/^Sport Pilot Course$/ >> nth=0)
- locator.getByLabel('Close').waitFor
- locator.getByLabel('Close').click
- expect.toBeVisible
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/SPORT/licenses)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418988/videosViewed/all)
- page.reload
- locator.getByText('Video Progress: 100%').textContent
- page.waitForTimeout
- page.screenshot
- attach "course-progress-screenshot"
- locator.waitFor(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.click(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByLabel('Close').click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('button', { name: 'Quit' }).waitFor
- locator.getByRole('button', { name: 'Quit' }).click
- locator.getByText('Are you sure you want to leave the session?').waitFor
- locator.getByText('Are you sure you want to leave the session?').click
- locator.getByRole('button', { name: 'Yes' }).waitFor
- locator.getByRole('button', { name: 'Yes' }).click
- page.waitForTimeout
- page.reload
- locator.waitFor(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.click(#courseSidenav li >> internal:has-text="Test Prep"i)
- locator.getByText('Start', { exact: true }).nth(1).waitFor
- locator.getByText('Start', { exact: true }).nth(1).click
- locator.getByLabel('Close').waitFor
- locator.getByLabel('Close').click
- locator.getByRole('button', { name: '95%' }).waitFor
- locator.getByRole('button', { name: '95%' }).click
- page.waitForTimeout
- locator.getByRole('button', { name: 'Grade Session' }).waitFor
- locator.getByRole('button', { name: 'Grade Session' }).click
- locator.getByText('Are you sure you want to Grade Session?').waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).waitFor
- locator.getByRole('button', { name: 'Yes, grade session.' }).click
- locator.getByRole('button', { name: 'Quit' }).waitFor
- locator.getByRole('button', { name: 'Quit' }).click
- locator.getByText('Are you sure you want to leave the session?').waitFor
- locator.getByText('Are you sure you want to leave the session?').click
- locator.getByRole('button', { name: 'Yes' }).waitFor
- locator.getByRole('button', { name: 'Yes' }).click
- locator.getByText('Request Endorsement').waitFor
- locator.getByText('Request Endorsement').click
- locator.getByRole('button', { name: 'Continue with the endorsement' }).waitFor
- locator.getByRole('button', { name: 'Continue with the endorsement' }).click
- locator.waitFor(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Name on Photo ID$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Street Address$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^City$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Zip$/ >> internal:role=textbox)
- locator.waitFor(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.fill(div >> internal:has-text=/^Phone$/ >> internal:role=textbox)
- locator.waitFor(input[type="email"] >> nth=0)
- locator.fill(input[type="email"] >> nth=0)
- locator.waitFor(input[type="email"] >> nth=1)
- locator.fill(input[type="email"] >> nth=1)
- locator.waitFor(select[name="State"])
- locator.selectOption(select[name="State"])
- locator.getByRole('button', { name: 'Submit' }).waitFor
- locator.getByRole('button', { name: 'Submit' }).click
- page.waitForTimeout
- page.screenshot
- attach "submit-certificate-request-screenshot"
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418988?deleteProgress=true)
- After Hooks
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4
Screenshot 5
| Status |
Time Taken |
| Passed |
60.98s |
Test 9: Login into Sportys as a Paid User and go to Delete License @pilot_training @Paid
- Before Hooks
- page.goto(https://test.courses.sportys.com/training/portal)
- locator.getByRole('link', { name: 'Log In' }).waitFor
- locator.getByRole('link', { name: 'Log In' }).click
- page.screenshot
- attach "before-login-screenshot"
- locator.getByPlaceholder('Email Address').waitFor
- locator.getByPlaceholder('Email Address').fill
- locator.getByPlaceholder('Password').waitFor
- locator.getByPlaceholder('Password').fill
- locator.getByRole('button', { name: 'Log In' }).waitFor
- locator.getByRole('button', { name: 'Log In' }).click
- page.waitForTimeout
- page.screenshot
- attach "login-page-screenshot"
- page.waitForResponse
- response.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/account)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/ATP/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/CFI_AI/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/CFI_FOI/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/CFI_AI/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/CFI_I/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/COMMERCIAL/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/INSTRUMENT/licenses)
- apiResponse.json
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/PRIVATE/licenses)
- apiResponse.json
- apiRequestContext.post(https://test.courses.sportys.com/altitude/api/authenticate)
- apiResponse.json
- apiRequestContext.delete(https://test.courses.sportys.com/altitude/api/admin/training/users/42952231/licenses/43418986?deleteProgress=true)
- apiRequestContext.get(https://test.courses.sportys.com/altitude/api/course/SPORT/licenses)
- apiResponse.json
- After Hooks
Screenshot 1
Screenshot 2
| Status |
Time Taken |
| Passed |
16.87s |